/*
枚举子集例2：https://www.luogu.com.cn/problem/B3622
要点：
•dfs(i) 表示枚举到第i个人。
•a 数组保存当前枚举情况，a[i] 来存第i个人参加，还是不参加。
•当枚举完所有的人，就全部输出。
•dfs(pos) 负责枚举a[pos]。
*/
#include <bits/stdc++.h>
using namespace std;

int n, k;
int a[15];

void dfs(int pos) {
    if(pos == n + 1) { // 枚举完所有人
        for(int i = 1; i <= n; i++){ // 输出方案
            // 如果是 0 输出 'N'
            if (a[i] == 0) {
                cout << "N";
            }
            // 否则输出 'Y'
            else {
                cout << "Y";
            }
        }
        cout << endl;
        return;
    }

    for(int i = 0; i <= 1; i++) {
        a[pos] = i;    // 将 pos 位填充成 i
        dfs(pos + 1);    // 递归填写后续位置
    }
}

int main() {
    cin >> n;

    dfs(1); // 最先枚举第几个人？

    return 0;
}

/*
g++ dfs/dfs_2.cpp && echo 3 | ./a.out
*/